package com.woniuxy.springaop.service.advice;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;


/**
 * @author linke
 * @version 1.0
 * @className: MyAspect
 * @description: 切面类    org.aopalliance.intercept包下的
 * @date 2021/11/15 19:01
 */
public class MyAspect implements MethodInterceptor {
    /**
     * 类似我们自己写的 动态代理
     * 类似拦截器
     *
     * @param invocation
     * @return 返回一个代理后的对象
     * @throws Throwable
     */
    @Override
    public Object invoke(MethodInvocation invocation) throws Throwable {
        beforeAdvice();
        //执行的是目标方法 和之前手写的 method.invoke差不多
        Object proceed = invocation.proceed();
        afterAdvice();
        //这里是返回的对象
        return proceed;
    }


    public void beforeAdvice(){

        System.out.println("MyAspect.beforeAdvice：方法执行之前……");
    }
    public void afterAdvice() {

        System.out.println("MyAspect.afterAdvice: 方法执行之后……");
    }



}
